#!/bin/bash
if [[ $(whoami) != "lfs" ]]; then
	echo "Please log in as user lfs...";
	exit 1;
fi
cd $LFS/sources/pkg || exit 1
source ./utils.sh || exit 2
#######################################
# set package name here
PACKAGE=$(echo $0 | sed -e 's/.*make_\(.*\).sh/\1/');
#######################################
PKG_NAME=$(pkgname extra $PACKAGE); if (($? != 0)); then exit 1; fi;
PKG_VERSION=$(pkgversion extra $PACKAGE); if (($? != 0)); then exit 2; fi;
PKG_ARCHIVE=$(pkgarchive extra $PACKAGE); if (($? != 0)); then exit 3; fi;
echo "make $PACKAGE ($PKG_NAME) with version $PKG_VERSION from archive $PKG_ARCHIVE"
PKG_FOLDER=$(unpack $PKG_ARCHIVE); if (($? != 0)); then exit 4; fi;
PKG_DEST=/usr/pkg/$PKG_NAME/$PKG_VERSION;
cd ../$PKG_FOLDER || exit 5;
#######################################
# prepare package source (patch etc.)
# BLK1



#######################################
ERR=$?;
if (($ERR != 0)); then
    errcho "Aborted package preparing with code $ERR";
    exit 6;
fi
#######################################
# configure and make package
./configure \
    --prefix=/usr \
    --sysconfdir=/etc                   \
    --localstatedir=/var                \
    --with-piddir=/run/samba            \
    --with-pammodulesdir=/lib/security  \
    --without-systemd                   \
    --enable-fhs                        \
    --enable-nss-wrapper && \
    && \
    make && \
    sed -i "/samba3.blackbox.failure.failure/i \^samba3.raw.eas" selftest/knownfail && \
    rm -vRf $PKG_DEST/inst && \
    mkdir -pv $PKG_DEST/inst/{usr/{bin,lib,share},lib,etc} && \
    make DESTDIR=$PKG_DEST/inst install && \
    make DESTDIR=$PKG_DEST/inst install-samba && \
    make DESTDIR=$PKG_DEST/inst install-winbindd



#######################################
ERR=$?;
if (($ERR != 0)); then
    errcho "Aborted package building with code $ERR";
    exit 6;
fi
#######################################
# make post checks and configuration

mv -v $PKG_DEST/inst/usr/lib/libnss_win{s,bind}.so*   $PKG_DEST/inst/lib         && \
ln -v -sf ../../lib/libnss_winbind.so.2 $PKG_DEST/inst/usr/lib/libnss_winbind.so && \
ln -v -sf ../../lib/libnss_wins.so.2    $PKG_DEST/inst/usr/lib/libnss_wins.so    && \
install -v -m644    examples/smb.conf.default $PKG_DEST/inst/etc/samba           && \
mkdir -pv $PKG_DEST/inst/etc/openldap/schema                        && \
install -v -m644    examples/LDAP/README              \
                    $PKG_DEST/inst/etc/openldap/schema/README.LDAP  && \
install -v -m644    examples/LDAP/samba*              \
                    $PKG_DEST/inst/etc/openldap/schema              && \
install -v -m755    examples/LDAP/{get*,ol*} \
                    $PKG_DEST/inst/etc/openldap/schema              && \
install -v -m755 -d $PKG_DEST/inst/usr/share/doc/$PKG_NAME-$PKG_VERSION && \
install -v -m644    lib/ntdb/doc/design.pdf \
                    $PKG_DEST/inst/usr/share/doc/$PKG_NAME-$PKG_VERSION && \
ln -v -sf $PKG_DEST/inst/usr/bin/smbspool $PKG_DEST/inst/usr/lib/cups/backend/smb


#######################################
ERR=$?;
if (($ERR != 0)); then
    errcho "Aborted package building with code $ERR";
    exit 7;
fi
echo "# Package information file... generated at make process" > $PKG_DEST/pkg.info && \
echo "# pkg name   source archive    version" >> $PKG_DEST/pkg.info && \
echo "$PKG_NAME  $PKG_ARCHIVE  $PKG_VERSION" >> $PKG_DEST/pkg.info && \
if [ -d $LFS/sources/pkg/extra/$PKG_NAME ]; then cp -aRv $LFS/sources/pkg/extra/$PKG_NAME/* $PKG_DEST; fi && \
cp -avf $LFS/sources/pkg/pkgutils.sh $PKG_DEST/pkgutils.sh && \
tar -czvvf /usr/pkg/${PKG_NAME}_${PKG_VERSION}_pkg.tar.gz -C /usr/pkg/$PKG_NAME $PKG_VERSION && \
rm -Rfv /usr/pkg/$PKG_NAME && \
cd $LFS/sources && \
rm -Rfv $PKG_FOLDER || exit 8;
errcho "Build complete extra/$PACKAGE"
errcho "Package files are stored to: /usr/pkg/${PKG_NAME}_${PKG_VERSION}_pkg.tar.gz"
echo " --OK--"
